﻿namespace HomeWork15
{
    using System;
    using System.Globalization;
    using System.Text;
    /// <summary>
    /// 在console里输出当月的日历，如图（本日如彩色表示，不要圆圈，不要农历）
    /// </summary>
    internal class Program
    {
        static void Main(string[] args)
        {
            // 获取当前日期
            DateTime today = DateTime.Today;

            // 获取当前月份的第一天
            DateTime firstDayOfMonth = new DateTime(today.Year, today.Month, 1);

            // 获取当前月份的最后一天
            DateTime lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1);

            // 获取当前月份的第一天是星期几
            DayOfWeek firstDayOfWeek = firstDayOfMonth.DayOfWeek;

            // 计算当前月份的总天数
            int daysInMonth = lastDayOfMonth.Day;

            // 输出表头
            Console.WriteLine("  日 一 二 三 四 五 六");

            // 添加空格以对齐第一周
            for (int i = 0; i < (int)firstDayOfWeek; i++)
            {
                Console.Write("   ");
            }

            // 添加日期
            for (int day = 1; day <= daysInMonth; day++)
            {
                // 检查是否为当天
                if (day == today.Day)
                {
                    // 设置当前日期的颜色
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Write($"{day,3}");
                    Console.ResetColor();
                }
                else
                {
                    Console.Write($"{day,3}");
                }

                // 换行
                if (((int)firstDayOfWeek + day - 1) % 7 == 6)
                {
                    Console.WriteLine();
                }
            }

            // 如果最后一行不是完整的星期，添加额外的空格
            if (daysInMonth % 7 != 0)
            {
                for (int i = 0; i < 7 - (daysInMonth % 7); i++)
                {
                    Console.Write("   ");
                }
            }

            // 确保最后一行输出完毕
            Console.WriteLine();
        }
    }
}